#pragma once

#include <list>

#include "../Tokens/BaseToken.h"

#include "../SGD Wrappers/CSGD_Direct3D.h"

enum Tiles { Base, Breakable, Moveable, Soft, Spawn, Trigger };

class CBaseTile :
	public BaseToken
{
public:

	CBaseTile(void);
	~CBaseTile(void);

	// Interface
	void Update			( float fElapsedTime );
	void Render			( void );
	RECT GetRect		( void );
	bool CheckCollision ( BaseToken* pOther );

	// Tile Specific

	// Accessors
	int GetImageID	( void ) { return m_nImageID; }
	int GetTileID	( void ) { return m_nTileID;  }
	int GetOffsetX	( void ) { return m_nOffsetX; }
	int GetOffsetY	( void ) { return m_nOffsetY; }

	void SetImageID ( int ImageID	)	{ m_nImageID = ImageID; }
	void SetTileID	( int TileID	)	{ m_nTileID = TileID;	}
	void SetOffsetX ( int OffsetX	)	{ m_nOffsetX = OffsetX; }
	void SetOffsetY ( int OffsetY	)	{ m_nOffsetY = OffsetY; }
	void SetOffset	( int X, int Y  )	{ m_nOffsetX = X; m_nOffsetY = Y; }

protected:

	int m_nTileID;

private:

	int m_nImageID;
	
	int m_nOffsetX;
	int m_nOffsetY;

	bool m_bIsOnScreen;
};